<?php

if (! defined ( 'BASEPATH' ))
	exit ( 'No direct script access allowed' );
class Welcome extends CI_Controller {
	public function __construct() {
		parent::__construct ();
	}
	public function index() {
		$this->layout->view ( 'welcome/index' );
	}
	public function proveedor() {
		$this->layout->view ( 'welcome/proveedor' );
	}
	public function empleado() {
		$this->layout->view ( 'welcome/empleado' );
	}
	public function nosotros() {
		$this->layout->view ( 'welcome/about-us' );
	}
	public function contacto() {
		$this->layout->view ( 'welcome/contact-us' );
	}
	/**
	 * metodo encargado de crear una session para un usuario valido
	 */
	public function login() {
		$this->load->helper ( 'form' );
		$this->load->library ( 'form_validation' );
		$rules = array (
				array (
						'field' => 'txtUsuario',
						'label' => 'Usuario',
						'rules' => 'required|valid_email' 
				),
				array (
						'field' => 'txtPassword',
						'label' => 'Password',
						'rules' => 'required' 
				) 
		);
		$this->form_validation->set_rules ( $rules );
	    /* validamos datos recibidos */
		if ($this->form_validation->run () == FALSE) {
			$this->reditectIndex($this->form_validation->error_string ());
			return;
		}
		/* buscamos usuarios con los datos recibidos*/
		$this->load->model ( 'entities/Usuario' );
		$objUsuario = $this->Usuario->getClass ();
		$objUsuario->usuario = $_POST ['txtUsuario'];
		$usuario = $this->Usuario->getByWhere ( $objUsuario );
		if (empty ( $usuario )) {
			$this->reditectIndex('El usuario no fue encontrado.');
			return;
		}
		/* validamos que el usuario esta activo */
		if ($usuario->estado != 1) {
			$this->reditectIndex('El usuario no se encuentra activo.');
			return;
		}
		/* validamos que el password sea correcto y que tenga un perfil */
		if($usuario->clave != $_POST['txtPassword']){
			$this->reditectIndex('El passsord es incorrecto.');
			return;
		}
		$this->load->model ( 'entities/Perfil' );
		$perfil = $this->Perfil->getById($usuario->perfil_id);
		if(empty($perfil)){
			$this->reditectIndex('Error inesperado al cargar el perfil del usuario.');
			return;
		}
		$this->redirecPerfilToPage($perfil->nivel);
	}
	
	/**
	 * redirige a una pagina de inicio segun su perfil
	 * @param unknown $perfil
	 */
	private function redirecPerfilToPage($perfil){
		$perfil = strtoupper($perfil);
		$page = '/welcome';
		switch ($perfil){
			case 'ADMINISTRADOR': $page = '/administrador';
			break;
			case 'EMPRESA': $page = '/empresa';
			break;
			case 'PROVEEDOR': $page = '/proveedor';
			break;
			case 'EMPLEADO': $page = '/empleado';
			break;
		}
		redirect($page);
	}
	
	/**
	 * redirecciona al index del welcome con el erro de login
	 * @param unknown $msg
	 */
	private function reditectIndex($msg) {
		$this->layout->setParams ( array (
					'layout_errors' => $msg
			) );
		$this->layout->view ( 'welcome/index' );
	}
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */